#ifndef IA32SYSCALL_H
#define IA32SYSCALL_H

#include "crossbit/SyscallHandler.h"
#include "arch/ia32/IA32ProcessorState.h"

namespace crossbit {

    class ProcessorState;
    class MemoryImage;

    // class IA32Syscall emulate the SimpleScalar IA32 (a derivative of 
    // Ultrix) syscall.

    class IA32Syscall : public SyscallHandler {
	public:
	    // Initialze IA32Syscall with machine state, including
	    // processor state and memory image
	    IA32Syscall(IA32ProcessorState *state, MemoryImage *img);
	    ~IA32Syscall();

	    void operator () ();

	    int syscode();

	private:
	    IA32ProcessorState *state_;
	    MemoryImage *img_;
    };

}
#endif
